<!DOCTYPE html>
<title>Tests that video controls are not shown when entering/exiting fullscreen
without hovering over the controls. Opposite of
video-enter-exit-fullscreen-while-hovering-shows-controls.html</title>
<script src="../../fullscreen/full-screen-test.js"></script>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../media-controls.js"></script>

<video controls></video>

<script>
async_test(function(t) {
  var video = document.querySelector("video");
  enableTestMode(video);

  video.oncanplaythrough = t.step_func(function() {
    video.oncanplaythrough = null;

    var panel = mediaControlsButton(video, "panel");

    // Move mouse to the play button and start playing the video.
    clickAtCoordinates(...elementCoordinates(enabledPlayButton(video)));

    assert_equals(getComputedStyle(panel).opacity, "1",
                  "Inline controls should initially show since controls " +
                  "attribute is present");

    // Move mouse away so it no longer hovers over controls/video.
    eventSender.mouseMoveTo(0, 0);

    video.blur();

    runAfterHideMediaControlsTimerFired(t.step_func(function() {
      assert_equals(getComputedStyle(panel).opacity, "0",
                    "Inline controls should be hidden by timer");

      // Enter fullscreen (without moving the mouse over the controls).
      runWithKeyDown(function() { video.webkitRequestFullscreen(); });
    }), video);

    video.onwebkitfullscreenchange = t.step_func(function() {
      video.onwebkitfullscreenchange = null;

      assert_equals(document.webkitFullscreenElement, video,
                    "Should have entered fullscreen");

      waitForHoverEffectUpdate(t.step_func(function() {
        assert_equals(getComputedStyle(panel).opacity, "0",
                      "Fullscreen controls should not show after entering " +
                      "fullscreen since mouse is not hovering over controls");
       }));

      setTimeout(t.step_func(function() {
        // Exit fullscreen (without moving the mouse over the controls).
        document.webkitExitFullscreen();
      }), 0);

      video.onwebkitfullscreenchange = t.step_func(function() {
        assert_equals(document.webkitFullscreenElement, null,
                      "Should have exited fullscreen");

        waitForHoverEffectUpdate(t.step_func(function() {
          assert_equals(getComputedStyle(panel).opacity, "0",
                        "Inline controls should not show after exiting " +
                        "fullscreen since mouse is not hovering over controls");
        }));

        t.done();
      });
    });
  });

  video.src = "../content/test-25fps.ogv";
});
</script>
